package com.example.BlockChain.entity;

/**
 * TradeObject 类
 * 描述单个交易对象的详细信息，是区块链溯源系统中的核心交易实体。
 *
 * 属性涵盖交易的发起方、接收方、区块索引、签名等重要信息，
 * 可用于存储、传输和展示交易数据。
 */
public class TradeObject {

    // 交易发起方的标识
    private String from;

    // 交易接收方的标识
    private String to;

    // 交易的哈希值（唯一标识）
    private String hashNo;

    // 交易类型（如支付、转账、合约执行等）
    private String type;

    // 相关图片的 URL（如交易凭证图片）
    private String imgUrl;

    // 交易内容的文本描述
    private String content;

    // 区块索引（记录交易所在区块的位置）
    private String blockIndex;

    // 交易内容的 JSON 表示（便于扩展）
    private String contentjson;

    // 交易的 JSON 创建时间
    private String jsoncreatetime;

    // 用户标识
    private String uId;

    // 附件路径（如交易相关文件的存储路径）
    private String annexPath;

    // 文件路径（如附加的存储文件位置）
    private String filePath;

    // 区块的哈希值（所在区块的唯一标识）
    private String blockHash;

    // 交易创建时间
    private String createTime;

    // 签名信息（交易的数字签名，用于验证交易的合法性）
    private String sign;

    // 合约内容（若交易涉及智能合约）
    private String contractContent;

    // 附加参数字符串（用于存储扩展数据）
    private String paramStr;

    // 最后的数据内容（交易链的最终状态）
    private String lastData;

    // 对象转为字符串的表示（便于调试）
    private String objToString;

    // 数据字符串（备用属性，存储额外数据）
    private String dataStr;

    /**
     * 重写 toString 方法，便于查看对象内容
     * @return TradeObject 的关键属性的字符串表示
     */
    @Override
    public String toString() {
        return "TradeObject{" +
                "from='" + from + '\'' +
                ", to='" + to + '\'' +
                ", type='" + type + '\'' +
                ", imgUrl='" + imgUrl + '\'' +
                ", content='" + content + '\'' +
                ", blockIndex='" + blockIndex + '\'' +
                ", contentjson='" + contentjson + '\'' +
                ", jsoncreatetime='" + jsoncreatetime + '\'' +
                ", uId='" + uId + '\'' +
                ", annexPath='" + annexPath + '\'' +
                ", filePath='" + filePath + '\'' +
                ", contractContent='" + contractContent + '\'' +
                ", paramStr='" + paramStr + '\'' +
                ", lastData='" + lastData + '\'' +
                '}';
    }

    // Getter 和 Setter 方法，以下每个方法的作用是读取和修改相应属性的值

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }

    public String getHashNo() {
        return hashNo;
    }

    public void setHashNo(String hashNo) {
        this.hashNo = hashNo;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getBlockIndex() {
        return blockIndex;
    }

    public void setBlockIndex(String blockIndex) {
        this.blockIndex = blockIndex;
    }

    public String getContentjson() {
        return contentjson;
    }

    public void setContentjson(String contentjson) {
        this.contentjson = contentjson;
    }

    public String getJsoncreatetime() {
        return jsoncreatetime;
    }

    public void setJsoncreatetime(String jsoncreatetime) {
        this.jsoncreatetime = jsoncreatetime;
    }

    public String getuId() {
        return uId;
    }

    public void setuId(String uId) {
        this.uId = uId;
    }

    public String getAnnexPath() {
        return annexPath;
    }

    public void setAnnexPath(String annexPath) {
        this.annexPath = annexPath;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getBlockHash() {
        return blockHash;
    }

    public void setBlockHash(String blockHash) {
        this.blockHash = blockHash;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getContractContent() {
        return contractContent;
    }

    public void setContractContent(String contractContent) {
        this.contractContent = contractContent;
    }

    public String getParamStr() {
        return paramStr;
    }

    public void setParamStr(String paramStr) {
        this.paramStr = paramStr;
    }

    public String getLastData() {
        return lastData;
    }

    public void setLastData(String lastData) {
        this.lastData = lastData;
    }

    public String getObjToString() {
        return objToString;
    }

    public void setObjToString(String objToString) {
        this.objToString = objToString;
    }

    public String getDataStr() {
        return dataStr;
    }

    public void setDataStr(String dataStr) {
        this.dataStr = dataStr;
    }
}
